﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace ICRprojekt.UcitavanjePitanja
{
    static public class DohvatiIzBaze
    {
              /// <summary>
        /// Lista učitanih pitanja.
        /// </summary>
        private static readonly List<Pitanje> pitanja = new List<Pitanje> ( );

        /// <summary>
        /// Lista učitanih pitanja.
        /// </summary>
        public static List<Pitanje> Pitanja
        {
            get { return pitanja; }
        }

        /// <summary>
        /// Parsira datoteku i vadi iz nje pitanja za kviz.
        /// Pitanja u datoteci moraju biti u ispravnom obliku!
        /// </summary>
        /// <returns>Listu svih pitanja u datoteci.</returns>
        static public List<Pitanje> DohvatiPitanjaIzBaze()
        {
            List<Pitanje> kopija = Baza.BazaCentar.Pitanja_Select();
            foreach (Pitanje pitanje in kopija)
            {
                Pitanja.Add(pitanje);
            }
            return Pitanja;
        }

        /// <summary>
        /// Metoda izdvaja iz svih pitanja samo ona zadane kategorije.
        /// </summary>
        /// <param name="kategorija">Kategorija pitanja.</param>
        /// <returns>Lista pitanja zadane kategorije.</returns>
        static public List<Pitanje> DohvatiKategoriju( KategorijaPitanja kategorija )
        {
            if (pitanja.Count == 0)
                DohvatiPitanjaIzBaze();

            var pitanja_zadane_kategorije = from n in Pitanja
                                            where n.Kategorija == kategorija
                                            select n;

            return pitanja_zadane_kategorije.ToList();
        }

        /// <summary>
        /// Pomocna metoda za odredjivanje kategorije.
        /// </summary>
        /// <param name="kratica">String kratica kategorije</param>
        /// <returns>Objekt kategorije pitanja.</returns>
        static public KategorijaPitanja OdrediKategoriju(string kratica)
        {
            return DohvatIzDatoteke.OdrediKategoriju(kratica);
        }

        /// <summary>
        /// #DINO
        /// Pretvaranje kategorije u kraticu
        /// </summary>
        /// <param name="kratica">Objekt kategorije pitanja</param>
        /// <returns>String kratica kategorije</returns>
        static public string OdrediKraticu(KategorijaPitanja kategorija)
        {
            return DohvatIzDatoteke.OdrediKraticu(kategorija);
        }
    }
}
